Scroll to navigation

mbox(5) File Formats Manual mbox(5)

NAZWA

mbox - plik zawierający wiadomości pocztowe

WPROWADZENIE

Najpopularniejszym formatem przechowywania wiadomości pocztowych jest format mbox. mbox jest pojedynczym plikiem zawierającym zero lub więcej listów.

FORMAT WIADOMOŚCI

List zakodowany w formacie mbox zaczyna się od linii From_, po której występuje ciąg linii innych niż From_ a kończy pustą linią. Linia From_ oznacza dowolną linię zaczynającą się znakami F, r, o, m, spacja:


From god@heaven.af.mil Sat Jan 3 01:05:34 1996
Return-Path: <god@heaven.af.mil>
Delivered-To: djb@silverton.berkeley.edu
Date: 3 Jan 1996 01:05:34 -0000
From: God <god@heaven.af.mil>
To: djb@silverton.berkeley.edu (D. J. Bernstein)

How's that mail system project coming along?

Ostatnia linijka jest całkiem pusta (bez spacji czy tabulacji). Zauważ, że puste linie mogą się też pojawić w dowolnym innym miejscu listu.

Linia From_ zawsze ma postać From nadkopert data dalsze_info. nadkopert jest jednym wyrazem, bez spacji czy tabulacji. Jest to zwykle nadawca z koperty (envelope sender) listu. data jest datą dostarczenia listu. Zawiera zawsze dokładnie 24 znaki w formacie asctime. dalsze_info jest opcjonalne i może zawierać dowolne informacje.

Pomiędzy linią From_ a pustą linią jest wiadomość w formacie RFC 822 , jak to opisano w qmail-header(5), podlegającą cytowaniu >From, jak opisano poniżej.

JAK LIST JEST DOSTARCZANY

Oto, w jaki sposób program dopisuje list do pliku mbox.

Najpierw tworzy linię From_ z danym nadawcą kopertowym listu i bieżącą datą. Jeśli nadawca kopertowy jest pusty (tzn. jeśli jest to poczta odbita), to zamiast tego program używa nazwy MAILER-DAEMON. Jeśli nazwa nadawcy kopertowego zawiera spacje, tabulacje lub znaki nowej linii, to są one zamieniane na myślniki.

Następnie program kopiuje wiadomość, do każdej linii stosując cytowanie >From . Takie postępowanie zapewnia, iż powstałe linie nie będą liniami From_: program poprzedza znakiem większości > wszystkie linie From_, >From_, >>From_, >>>From_, itd.

Na koniec do wiadomości dopisywana jest pusta linia. Jeśli ostatnia linia była linią częściową [tj. nie zakończoną znakiem nowej linii - tłum.], to zapisywane są dwa znaki nowej linii. W przeciwnym razie - jeden.

JAK LIST JEST CZYTANY

Czytnik przegląda plik mbox szukając linii From_. Każda taka linia oznacza początek wiadomości. Czytnik nie powinien próbować wykorzystywać tego, że każda linia From_ (poza początkiem pliku) jest poprzedzana linią pustą.

Po znalezieniu listu, czytnik wydziela z linii From_ nazwę nadawcy kopertowego (może być uszkodzona) i datę dostarczenia. Następnie czyta aż do następnej linii From_ lub do końca pliku, zależy co wystąpi wcześniej. Odcina ostatnią pustą linię i usuwa cytowania z linii >From_, >>From_ i tak dalej. Wynikiem jest wiadomość zgodna z RFC 822.

POPULARNE ODMIANY MBOX

Istnieje wiele odmian formatu mbox. Wariant opisany powyżej jest formatem mboxrd, spopularyzowanym przez Rahula Dhesi w czerwcu 1995.

Oryginalny format mboxo cytuje tylko linie From_, nie >From_. W rezultacie nie sposób powiedzieć, czy


From: djb@silverton.berkeley.edu (D. J. Bernstein)
To: god@heaven.af.mil

>From now through August I'll be doing beta testing.
Thanks for your interest.

było cytowane w oryginalnym liście. Czytnik mboxrd zawsze usunie cytowanie.

Format mboxcl przypomina mboxo, ale zawiera pole Content-Length z liczbą bajtów wiadomości. Format mboxcl2 jest taki jak mboxcl, ale nie ma żadnego cytowania >From. Te formaty są stosowane przez programy przesyłające pocztę w SVR4. mboxcl2 nie może być bezpiecznie czytane przez czytniki mboxrd.

NIE SKONKRETYZOWANE SZCZEGÓŁY

Istnieje wiele mechanizmów blokowania plików mbox. qmail-local zawsze używa flock na systemach, które go mają, w przeciwnym razie lockf.

Data dostarczenia w linii From_ nie podaje strefy czasowej. qmail-local zawsze tworzy datę dostarczenia w GMT, dzięki czemu pliki mbox można bezpiecznie przenosić z jednej strefy czasowej do innej.

Jeśli mtime [czas modyfikacji] niepustego pliku mbox jest większe niż atime [czas dostępu], to plik zawiera nowe listy. Jeśli mtime jest większe niż atime, to nowa poczta została przeczytana. Jeżeli mtime jest równe atime, nie da się w żaden sposób stwierdzić czy w pliku są nowe wiadomości, gdyż uruchomienie qmail-local zabiera dużo mniej niż sekundę. Jednym z rozwiązań jest sztuczne nadawanie przez czytnik czasowi atime wartości mtime plus 1. Wówczas plik zawiera nowe listy wtedy i tylko wtedy, gdy atime jest mniejsze bądź równe mtime.

Niektóre czytniki umieszczają w każdej wiadomości pole Status, wskazujące, które listy zostały już przeczytane.

ZOBACZ TAKŻE

maildir(5), qmail-header(5), qmail-local(8)